/**
 * 创建应用
 */
var App = function() {
    //下拉框
    var typeEl = $('#type');
    //下拉框选中值（下拉框第一次加载数据后，通过该变量设置默认的选中项）
    var typeValue;
    //日期选择框
    var lastModiDateEl = $('#lastModiDate');
    //登录表单
    var form = $('#form');
    //表单验证器
    var validator;
    //下拉框HTML模版
    var comboBoxTpl = Fw.template([
        '{@each data as item,index}',
            '<option value="${item.ID}">[${item.CODE}]${item.NAME}</option>',
        '{@/each}'
    ]);
    //
    return {
        /**
         * 依赖组件
         */
        requires : [
            //日历选择组件
            'Fw.Datetimepicker',
            //表单校验
            'Fw.FormValidation'
        ],
        /**
         * 初始化
         * 应用入口
         */
        init : function(require) {
            //查询类型数据
            Fw.util.Ajax.query({
                //数据源
                service: 'demo2Service.queryAll',
                //是否使用数据挡板（默认false）
                // staticData: true,
                //请求成功后回调
                success: function(data, result) {
                    //插入一条
                    data.splice(0, 0, {
                        ID: '',
                        NAME: '--请选择--',
                        CODE: '--'
                    });
//                    //追加一条
//                    data.push({
//                        ID: '',
//                        NAME: '--请选择--',
//                        CODE: '0'
//                    });
                    //
                    var html = comboBoxTpl.render({
                        data: data
                    });
                    typeEl.html(html);
                    //设置选中值
                    typeEl.val(typeValue);
                }
            });
            
            //渲染日历选择组件
            lastModiDateEl.parent().datetimepicker({
                pickerPosition: 'top-left'
            });
            
            //使低版本浏览器支持placeholder（IE8及以下）
            $('input').placeholder();
            
            //初始化事件
            this.initEvents();
            
            //初始化登录表单验证器
            this.initValidator();
        },
        /**
         * 初始化事件
         */
        initEvents: function(){
        },
        /**
         * 初始化登录表单验证器
         * 校验账号、密码、验证码等
         */
        initValidator: function(){
            validator = form.formValidation({
                //名称
                name: {
                    validators: {
                        //不允许为空
                        notEmpty: {
                            message: '请输入名称'
                        },
                        //最大/小长度
                        // stringLength: {
                            // min: 4,
                            // max: 4,
                            // message: '名称长度为4个字符'
                        // },
                        //后台校验
                        // remote: {
                            // //数据源（服务接口）
                            // service: 'loginService/getCaptchaStatus',
                            // params: function(){
                                // //校验时，带入参数
                                // return {
                                    // captchaSecurity: '...'
                                // };
                            // }/*,
                            // //输入时，延时200毫秒发起后台校验
                            // delay: 200*/
                        // },
                        //自定义校验
                        // callback: {
                            // callback: function(value, validator) {
                                // //校验手机号码或邮箱格式
                                // return {
                                    // message: '请输入有效的手机号码或电子邮箱或身份证号码',
                                    // valid: Fw.util.VTypes.isMobileNum(value) || Fw.util.VTypes.email(value)|| Fw.util.VTypes.isIDCard(value)
                                // };
                            // }
                        // }
                    }
                },
                //分类
                type: {
                    validators: {
                        //不允许为空
                        notEmpty: {
                            message: '请选择分类'
                        }
                    }
                }
            }).data('formValidation');
        },
        /**
         * 验证表单输入值是否合法
         */
        isValid: function(){
            return validator.validate().isValid();
        },
        /**
         * 返回表单值
         */
        getValues: function(){
            //表单数据（JSON格式）
            var values = form.serializeObject();
            //手动将类型value转换为对象
//            values['type'] = {
//                id: values['type']
//            };
            return values;
            
            // var values = {
                // id: $('#id').val(),
                // name: $('#name').val(),
                // type: {
                    // id: typeEl.val(), //选中值的ID，如果是多选，则值为数组
                    // name: typeEl.find("option:selected").text()//选中值的TEXT（如果后台不需要该值，可忽略）
                // },
                // remark: $('#remark').val(),
                // lastModiDate: lastModiDateEl.val()
            // };
            // if(!Fw.util.VTypes.alpha(values['code'])){
                // Fw.Msg.error('编码只允许输入英文字母！');
            // }
            // return values;
        },
        /**
         * 作为Window远程页面展现时
         * 当Window展现时触发
         */
        onShowWindow: function(win){
            var values = win.record || {};
            //重置表单验证，防止记录上次验证信息
         	form.data('formValidation').resetForm();
            //typeValue = values['type'] ? values['type']['id'] : '';
            typeValue = values['type'] ? values['type'] : '';
            $('#id').val(values['id']);
            $('#name').val(values['name']);
            typeEl.val(typeValue);
            $('#remark').val(values['remark']);
            lastModiDateEl.val(Fw.util.Format.fmtDate(values['lastModiDate'], 'yyyy-MM-dd'));
        }
    };
}();

/**
 * 页面加载完毕后，初始化应用
 */
Fw.onReady(App);
